import vm from "../main";
import {getWeChatConfig } from "@/api";
import * as wx from "weixin-js-sdk";
import {APIENV} from "@/utils/constant";

function weChatConfig() {
    // let userId = vm.$store.getters["user/userId"] || "";
    // let token = vm.$store.getters["user/token"] || "";
    // let Yhdtoken = vm.$store.getters["user/Yhdtoken"] || "";

    let localSignature = vm.$store.getters["app/signature"] || "";
    let localAppId = vm.$store.getters["app/appId"] || "";
    let localNonceStr = vm.$store.getters["app/nonceStr"] || "";
    let localTimeStamp = vm.$store.getters["app/timeStamp"] || "";

    // 本地缓存的wx openid
    let localWX = JSON.parse(window.localStorage.getItem("wx"))
    // 未登录
    // if( !userId) return;
    // 本地有缓存数据执行
    if (localSignature && localAppId && localNonceStr &&localTimeStamp) {
        let config = {
            signature:localSignature,
            appId:localAppId,
            nonceStr:localNonceStr,
            timeStamp:localTimeStamp,
        }
        registerWX(config);
        return;
    }
    getWeChatConfig({
        openid: vm.$store.getters["user/openid"] || localWX.openid,
        // userId: userId,
        // token: token,
        // Yhdtoken: Yhdtoken,
        urls:  window.location.href.split('#')[0]
    })
    .then( res => {
        if( res.respCode == "000000") {
            let info = {
                appId: res.params.appId,
                timeStamp: res.params.timestamp,
                nonceStr: res.params.nonceStr,
                signature: res.params.signature,
            }
            vm.$store.dispatch("app/setConfig", info)
            registerWX(info)
        }
    })
}
function registerWX(config) {
    let baseUrl = APIENV[process.env.VUE_APP_APIENV];
    let referrer = vm.$store.getters["user/recommendCode"] || "";
    let url = baseUrl +"/YhdOpention/QrcoderecommenCol.htm?referrer=" + referrer;
    let iconUrl = window.location.href.split("#")[0] + require('@/assets/images/invite/logoforwx.png');
    wx.config({
        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
        appId: config.appId, // 必填，公众号的唯一标识
        timestamp: config.timeStamp, // 必填，生成签名的时间戳
        nonceStr: config.nonceStr, // 必填，生成签名的随机串
        signature: config.signature,// 必填，签名
        jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData'] // 必填，需要使用的JS接口列表
    });
    wx.ready(function(){
        // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
        //分享给好友，以及分享给qq好友
        wx.updateAppMessageShareData({ 
            title: '客户推荐', // 分享标题
            desc: '推荐办理“押好贷”业务，享丰厚好礼！', // 分享描述
            link: url, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl: iconUrl, // 分享图标
            success: function () {
              // 设置成功
              console.log("微信分享好友设置成功")
            }
        });
        //分享到朋友圈，以及qq空间
        wx.updateTimelineShareData({ 
            title: '客户推荐', // 分享标题
            link: url, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl: iconUrl, // 分享图标
            success: function () {
              // 设置成功
              console.log("微信分享朋友圈设置成功")
            }
        })
    });
    wx.error(function(res){
        // 暂时未做处理
        console.log(res);
        // alert(res)
        // weChatConfig();
        // config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
    });
}

export default weChatConfig;